Preferred contact channel for user communications

ABSTRACT

In one embodiment, a user of a social networking system requests to look up a contact&#39;s communication channel information in the user&#39;s address book. The social networking system provides to the user the contact&#39;s communication channels in an ordered sequence based on the user&#39;s social graph and communication information.

PRIORITY

This application is a continuation under 35 U.S.C. §120 of U.S. patentapplication Ser. No. 14/192,443, filed 27 Feb. 2014, which is acontinuation under 35 U.S.C. §120 of U.S. patent application Ser. No.12/900,400, filed 7 Oct. 2010.

TECHNICAL FIELD

The present disclosure relates generally to a network communicationsservices and, more particularly, to ranking communication channels ofcontacts in a user's address book based on social graph information andcommunication history.

BACKGROUND

A social networking system, such as a social networking website, enablesits users to interact with it and with each other through the system.The social networking system may create and store a record, oftenreferred to as a user profile, in connection with the user. The userprofile may include a user's demographic information, communicationchannel information, and personal interest. The social networking systemmay also create and store a record of a user's relationship with otherusers in the social networking system (e.g., social graph), as well asprovide services (e.g., wall-posts, photo-sharing, or instant messaging)to facilitate social interaction between users in the social networkingsystem. For example, a user of a social networking website can access anaddress book stored in the social networking website, look up a contactin the address book and connect with the contact through email.

SUMMARY

Particular embodiments relate to ranking and/or selecting preferredcommunication channels for target users based on social graphinformation and communication history. These and other features,aspects, and advantages of the disclosure are described in more detailbelow in the detailed description and in conjunction with the followingfigures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example social networking system.

FIG. 2 illustrates an example method of ranking communication channelsbased on social proximity and communication history.

FIG. 2A illustrates an example of presentation sequences based on socialproximity.

FIG. 3 illustrates an example of updating a presentation sequence basedon inbound and outbound communication history.

FIG. 4 illustrates an example of presenting a contact's communicationchannels in the order of the adjusted presentation sequence.

FIG. 5 illustrates an example network environment.

FIG. 6 illustrates an example computer system.

DETAILED DESCRIPTION

The invention is now described in detail with reference to a fewembodiments thereof as illustrated in the accompanying drawings. In thefollowing description, numerous specific details are set forth in orderto provide a thorough understanding of the present disclosure. It isapparent, however, to one skilled in the art, that the presentdisclosure may be practiced without some or all of these specificdetails. In other instances, well known process steps and/or structureshave not been described in detail in order not to unnecessarily obscurethe present disclosure. In addition, while the disclosure is describedin conjunction with the particular embodiments, it should be understoodthat this description is not intended to limit the disclosure to thedescribed embodiments. To the contrary, the description is intended tocover alternatives, modifications, and equivalents as may be includedwithin the spirit and scope of the disclosure as defined by the appendedclaims.

A social networking system, such as a social networking website, enablesits users to interact with it, and with each other through, the system.Typically, to become a registered user of a social networking system, anentity, either human or non-human, registers for an account with thesocial networking system. Thereafter, the registered user may log intothe social networking system via an account by providing, for example, acorrect login ID or username and password. As used herein, a “user” maybe an individual (human user), an entity (e.g., an enterprise, business,or third party application), or a group (e.g., of individuals orentities) that interacts or communicates with or over such a socialnetwork environment.

When a user registers for an account with a social networking system,the social networking system may create and store a record, oftenreferred to as a “user profile”, in connection with the user. The userprofile may include information provided by the user and informationgathered by various systems, including the social networking system,relating to activities or actions of the user. For example, the user mayprovide his name, contact information, birth date, gender, maritalstatus, family status, employment, education background, preferences,interests, and other demographical information to be included in hisuser profile. The user may identify other users of the social networkingsystem that the user considers to be his friends. A list of the user'sfriends or first degree contacts may be included in the user's profile.Connections in social networking systems may be in both directions ormay be in just one direction. For example, if Bob and Joe are both usersand connect with each another, Bob and Joe are each connections of theother. If, on the other hand, Bob wishes to connect to Sam to view Sam'sposted content items, but Sam does not choose to connect to Bob, aone-way connection may be formed where Sam is Bob's connection, but Bobis not Sam's connection. Some embodiments of a social networking systemallow the connection to be indirect via one or more levels ofconnections (e.g., friends of friends). Connections may be addedexplicitly by a user, for example, the user selecting a particular otheruser to be a friend, or automatically created by the social networkingsystem based on common characteristics of the users (e.g., users who arealumni of the same educational institution). The user may identify orbookmark websites or web pages he visits frequently and these websitesor web pages may be included in the user's profile.

The user may provide information relating to various aspects of the user(such as contact information and interests) at the time the userregisters for an account or at a later time. The user may also updatehis or her profile information at any time. For example, when the usermoves, or changes a phone number, he may update his contact information.Additionally, the user's interests may change as time passes, and theuser may update his interests in his profile from time to time. A user'sactivities on the social networking system, such as frequency ofaccessing particular information on the system, may also provideinformation that may be included in the user's profile. Again, suchinformation may be updated from time to time to reflect the user'smost-recent activities. Still further, other users or so-called friendsor contacts of the user may also perform activities that affect or causeupdates to a user's profile. For example, a contact may add the user asa friend (or remove the user as a friend). A contact may also writemessages to the user's profile pages—typically known as wall-posts.

A social network system may maintain social graph information, which canbe generally defined by the relationships among groups of individuals,and may include relationships ranging from casual acquaintances to closefamilial bonds. A social network may be represented using a graphstructure. Each node of the graph corresponds to a member of the socialnetwork. Edges connecting two nodes represent a relationship between twousers. In addition, the degree of separation between any two nodes isdefined as the minimum number of hops required to traverse the graphfrom one node to the other. A degree of separation between two users canbe considered a measure of relatedness between the two users representedby the nodes in the graph.

A user may or may not wish to share his information with other users orthird-party applications, or a user may wish to share his informationonly with specific users or third-party applications. A user may controlwhether his information is shared with other users or third-partyapplications through privacy settings associated with his user profile.For example, a user may select a privacy setting for each user datumassociated with the user. The privacy setting defines, or identifies,the set of entities (e.g., other users, connections of the user, friendsof friends, or third party application) that may have access to the userdatum. The privacy setting may be specified on various levels ofgranularity, such as by specifying particular entities in the socialnetwork (e.g., other users), predefined groups of the user'sconnections, a particular type of connections, all of the user'sconnections, all first-degree connections of the user's connections, theentire social network, or even the entire Internet (e.g., to make theposted content item index-able and searchable on the Internet). A usermay choose a default privacy setting for all user data that is to beposted. Additionally, a user may specifically exclude certain entitiesfrom viewing a user datum or a particular type of user data.

In addition to user profile information, the social networking systemmay track or maintain other information about the user. For example, ageo-social networking system is a social networking system hosts one ormore location-based services that record the user's location. Forexample, users may access the geo-social networking system using aspecial-purpose client application hosted by a mobile device of theuser. The client application may automatically access Global PositioningSystem (GPS) or other geo-location functions supported by the mobiledevice and report the user's current location to the geo-socialnetworking system. In addition, the client application may supportgeo-social networking functionality that allows users to check-in atvarious locations and communicate this location to other users. Forexample, social network system may post information describing a user'scheck-in to the user's profile page, which may cause the information tobe included in newsfeeds of other users of the social networking system.In other implementations, the social networking system may add theinformation to such news feeds without posting it to a user profilepage. The user may also add, delete or update events that the user isassociated with. For example, a user may update a social eventassociated with a time and date that the user is planning to attend, ormake comments in his wall-posts about a past event he attended.

Additionally, social networking system may provide various communicationchannels for users to interact with each other. In addition, othercommunications channels not intermediated or facilitated by the socialnetworking system also allow users to interact. Thus, users of a socialnetworking system may interact with each other by sending and receivingcontent items of various types of media through the communicationchannels. In particular embodiments, communication channels may include,but are not limited to, email, instant messaging (IM), text, voice orvideo chat, and wall posts. A user of the social networking system mayalso interact through various communication channels outside the socialnetworking system with another person (a user or non-user of the socialnetworking system). Examples of those communication channels are phonecall though public switched telephone network (PSTN) or the Internet(e.g., VOIP or voice over internet protocol), text, voice or video chat,SMS (short message service) text messaging, instant messaging, andemail. To keep track of communication channel information, a user of thesocial networking system may keep one or more address books. An addressbook may contain one or more contacts (e.g., a person or a businessidentify) and for each contact, communication channel information forthe contact (e.g., a phone number, a user ID for an IM service, an emailaddress, a user ID for a social networking system, home address, etc.).A user of the social networking system may keep the one or more addressbooks inside or outside the social networking system. For example, thesocial networking system may maintain an address book for a user, andthe user can access the address book though the social networkingsystem's web site, or through a client application hosted by a clientdevice 122. For example, a user may keep an address book in a clientapplication hosted by the user's personal computer (e.g., MicrosoftOutlook) or keep an address book in a native address book applicationsupported by the user's mobile phone. For example, a user may keep anaddress book hosted over the Internet by a remote server (i.e., theaddress book is hosted “in the cloud”) and access the address book via aweb browser on a client device 122. In other implementations, an addressbook database may be synchronized between the client device 122 and thesocial network system.

FIG. 1 illustrates an example social networking system. In particularembodiments, the social networking system may store user profile dataand social graph information in user profile database 101. In particularembodiments, the social networking system may store user event data inevent database 102. In particular embodiments, the social networkingsystem may store user privacy policy data in privacy policy database103. In particular embodiments, the social networking system may storegeographic and location data in location database 104. In particularembodiments, databases 101, 102, 103, and 104 may be operably connectedto the social networking system's front end 120. In particularembodiments, the front end 120 may interact with client device 122through network cloud 121. Client device 122 is generally a computer orcomputing device including functionality for communicating (e.g.,remotely) over a computer network. Client device 122 may be a desktopcomputer, laptop computer, personal digital assistant (PDA), in- orout-of-car navigation system, smart phone or other cellular or mobilephone, or mobile gaming device, among other suitable computing devices.Client device 122 may execute one or more client applications, such as aweb browser (e.g., Microsoft Windows Internet Explorer, Mozilla Firefox,Apple Safari, Google Chrome, and Opera, etc.) or special-purpose clientapplication (e.g., Facebook for iPhone, etc.), to access and viewcontent over a computer network. Front end 120 may include web or HTTPserver functionality, as well as other functionality, to allow users toaccess the social networking system. Network cloud 121 generallyrepresents a network or collection of networks (such as the Internet ora corporate intranet, or a combination of both) over which clientdevices 122 may access the social network system.

In particular embodiments, user profile database 101 may storecommunication channel information and an address book of a user. Theaddress book, in one implementation, may be a superset or a subset ofthe users of the social networking system that a user has established afriend or contact relationship. A user of client device 122 may accessthis address book information using a special purpose or general purposeclient application to view contact information. In particularembodiments, the address book may contain one or more contacts (e.g. aperson or an business entity), and communication channel information foreach contact (e.g., a phone number, a user ID for an IM service, anemail address, a user ID for a social networking system, home address,etc.). For at least a portion of the address book information, thecontact entries may be dynamic in that the contact entry is associatedwith a user of the social networking system that maintains his or herown account and corresponding user profile with contact information.Accordingly, when a first user changes any aspect of contactinformation, the revised contact information may be provided torequesting users. In particular embodiments, a user may access theaddress book, look up and connect to a contact through a communicationchannel. Ordinarily, when a person looks up a contact, the address book(e.g., Microsoft Outlook) displays communication channels of the contactin a pre-set sequence, e.g., work phone number first followed by homephone number, mobile phone number, work email address, home emailaddress, etc. However, the pre-set order may not be most relevant as aperson may have different preferred communication channels forconnecting different contacts. For example, John may always connect withhis parents by calling his parent's home phone number, but may primarilyconnect with his college friend Nick by email. In addition, while atarget user may be comfortable providing an email address to many ormost contacts, he or she may be uncomfortable providing a phone numberor receiving a phone call on the target user's cell phone from suchcontacts. Particular embodiments below describe methods in providingcommunication channels in a preferred order based on social proximitybetween a target and requesting user and communication history.

FIG. 2 illustrates an example method of ranking communication channelsbased on social proximity and communication history. FIG. 2 can beimplemented by a channel-listing process hosted on one or more computingdevices of the social networking system. In particular embodiments, thesocial networking system may store an address book of a user in userprofile database 101. In particular embodiments, the address book maycomprise one or more contacts. In particular embodiments, each contactof the one or more contacts in the address book may comprise a name andcommunication channel information. In particular embodiments, the nameof a contact in the address book may be a name and/or a user ID of thesocial networking system. In one embodiment, the communication channelinformation in the address book may comprise one or more communicationchannel data, wherein each communication channel data comprise acommunication channel type identifier (e.g., email, work phone number,etc.) and a value of the communication channel type identifier (e.g.,joe@yahoo.com, 650.555.1212, etc.). In particular embodiments, thechannel-listing process may receive a request from a user to look upcommunication channel information of a target user in the user's addressbook or in relation to a general search for the user's contactinformation (201). For example, a user can access the social networkingsystem via a web-browser or special purpose client application, causingthe channel-listing process to look up information associated with acontact stored in an address book stored in user profile database 101.For example, a user can access the social networking system on a clientapplication hosted by the user's client device 122, causing thechannel-listing process to look up information associated with a contactstored in an address book stored in user profile database 101.

Ordinarily, when a person looks up a contact in an address book (e.g., anative address book on a mobile phone), the address book can presentcommunication channels of the contact in a static or pre-setpresentation sequence (e.g., phone number, followed by email address, IMuser ID, etc.), no matter how the contact is related to the user. Inparticular embodiments, the channel-listing process may establish one ormore presentation sequences for a user by assigning each contact in theuser's address book stored in user profile database 101 to one of theone or more presentation sequences. In particular embodiments, apresentation sequence may comprise an ordered list of communicationchannel types. In addition, not all communication channel types may beprovided to a requesting user. For example, social proximity between atarget and requesting user may determine which and how manycommunication channel types a requesting user is provided. In particularembodiments, the channel-listing process may display communicationchannels of a user's contact in the order of a presentation sequence thecontact is assigned to. For example, a presentation sequence of acontact can be an ordered list of (chat, call, SMS, email, IM), and thesocial networking system can display communication channels of thecontact in an ordered list of (chat, call, SMS, email, IM) or (user_ID,phone number, mobile_phone number, email_address, user_ID).

In particular embodiments, the channel-listing process may establish oneor more presentation sequences for a target user based on socialproximity, by assigning one or more contacts of the same or similarsocial proximity to the user to a same presentation sequence. FIG. 2Aillustrates an example of presentation sequences based on socialproximity (i.e., whether a contact is a family member, a friend, orsomeone other than a family member or a friend). As FIG. 2A illustrates,the social proximity between the target user and the requesting userdetermines the order of the contact channels and, in someimplementations, whether a given contact channel will be provided,displayed or otherwise made available. For example, in someimplementations, the channel-listing process only returns a top-rankedchannel to a requesting user, such as a target user's email address ifthe requesting user qualifies as neither a friend or family. Inparticular embodiments, the channel-listing process may acquireinformation characterizing the social proximity of the target user tothe requesting user (202). In particular embodiments, thechannel-listing process may access social graph information in userprofile database 101 and determine social proximity of the target userto the requesting user based on a degree of separation identified in asocial graph (e.g., whether the target user is a friend of therequesting user, or the target user is a friend of a friend of therequesting user, etc.). Social proximity may also be determined based ondeclared relationships between users, such as whether two users aremarried, siblings, cousins, and the like. In particular embodiments, thechannel-listing process may determine an affiliation coefficient of thetarget user based on social proximity between the target user and therequesting user, as well as one or more observed interactions betweenthe target user and the requesting user. For example, thechannel-listing process can assign an affiliation coefficient of 1.0 ifthe target user is the requesting user's parent, or an affiliationcoefficient of 0.9 if the target user frequently communicates with therequesting user, or an affiliation coefficient of 0.7 if the target useris a friend of friend of the requesting user, and the target user andthe requesting user went to the same college at the same time. A systemfor measuring user affinity is described more generally in U.S. patentapplication Ser. No. 11/503,093, filed on Aug. 11, 2006, which is herebyincorporated by reference in its entirety and for all purposes. Stillfurther, as discussed above, group users by social proximity (socialproximity) can be based on degrees of separation in a social graph,observed activities between users, explicitly defined relationship typesbetween users (e.g., “married to,” “in a relationship with,” “brotherof,” “son of,” etc.”), and combinations of the foregoing factors orattributes. In some implementations, social proximity can also be amatter of explicit configuration by a subject user.

In particular embodiments, the channel-listing process may determine apresentation sequence for the target user based on social proximitybetween the target user and the requesting user (203). FIG. 2Aillustrates presentation sequences for different user groups that arebased on degrees of social proximity to the user. For the example ofFIG. 2A, the channel-listing process receives a request from a user tolook up communication channel information of a target user in the user'saddress book. If a target user is a family member of a requesting user,then the channel-listing process can present the target user'scommunication channels to the requesting user in an order of (chat,call, SMS, email, IM). In the example of FIG. 2A, if a target user is afriend of a requesting user, then the channel-listing process canpresent the target user's communication channels to the requesting userin an order of (SMS, IM, call, email, chat). In the example of FIG. 2A,if a target user is not a family member or a friend of a requesting user(e.g., a co-worker), then the channel-listing process can present thetarget user's communication channels to the requesting user in an orderof (email, IM, chat, SMS, call) or, only (email) if only onecommunication channel is allowed). In some implementations, only thetop-ranked or top N (where N is less than all available communicationschannels) are presented to the requesting user. In this manner, thechannel-listing process suggests or recommends a communications channelto a requesting user that indicates a preferred way to reach the targetuser.

In particular embodiments, the channel-listing process may adjust apresentation sequence by current context (204). For example, a userrequests to look up a contact in the address book stored in user profiledatabase 101 and the presentation sequence for the contact is (call,chat, email, SMS, IM). If the channel-listing process determines thatthe contact is currently logged into the social networking system but isin a meeting (by accessing event database 102 or a calendar system), thechannel listing process can adjust the presentation sequence to (chat,email, SMS, call, IM) so that the user communication will not interruptthe target user's current activity.

In particular embodiments, the channel-listing process may present tothe requesting user the target user's communication channels in theorder of the adjusted presentation sequence (205). FIG. 4 illustrates anexample of presenting a contact's communication channels in the order ofthe adjusted presentation sequence. In particular embodiments, thechannel-listing process may present to the requesting user the targetuser's communication channels in the order of the adjusted presentationsequence in a graphic user interface (GUI) of a client applicationhosted by the requesting user's client device 122 (e.g., a mobilephone). In particular embodiments, each communication channel in the GUIis represented by an icon. In particular embodiments, an action on anicon by the requesting user may cause the client application to initiatea connection to the requesting user by the communication channelassociated with the icon. For example, the requesting user can fingertap on a phone icon, double click on a phone icon by a pointer, or draga phone icon to the requesting user's picture in the GUI in FIG. 4,causing the client application on the mobile phone to initiate a call tothe target user. In other implementations, a client application hostedon a user's client device 122 may automatically launch a communicationsapplication that corresponds to the top-ranked communications channel toinitiate a communications session with the target user.

In one implementation, a user may configure one or more rules thatdefine presentation sequences for various users specifically or socialproximity groups. For example, the user may configure a set ofpreferences for different groups of users that resembles FIGS. 2A. Theset of preferences can be considered default settings that may beadjusted based on current context, as well as observed communicationhistory. In particular embodiments, the channel-listing process canfurther update the one or more presentation sequences for a user bytaking into account the user's explicitly configured preferences andcommunication history relative to one or more users or groups of users.In particular embodiments, the channel-listing process may accesscommunication history data of a user in user profile database 101. Inparticular embodiments, a user's communication history may comprisefrequency information for each communication channel in the inboundand/or outbound directions with each contact in the user's address book,as well as other individuals within and/or outside the social network.For example, a user's communication history can store information suchas the number of emails sent/received between one or morecontacts/social proximity groups (e.g., family, friends, second-degreefriends, etc.), the number of text messages sent/received between one ormore contacts/social proximity groups, the number of phone callssent/received between one or more contacts/social proximity groups, andthe like. In some implementations, the client device 122, such as amobile device may be configured to periodically upload log data that canbe processed by the social networking system to generate thisinformation. In some implementations, the communication history data maybe raw or log data that is processed to yield these statistics. In otherimplementations, a data mining process may periodically analyze the logdata and maintain the above-identified counts over various slide timeintervals. In some implementations, a local process executing on theclient device 122 can process this information and generate statisticaldata for use by the social networking system. In particular embodiments,a connection between a user and another person may cause updates to theuser's communication history accordingly. For example, a user can lookup a contact in the user's address book by accessing a clientapplication hosted on the user's mobile phone, call the contact by aphone number listed in the address book, and the client applicationupdates the user's communication history for the contact accordingly(e.g., incrementing outbound call frequency for the contact/socialproximity group by 1). For example, a user may receive an SMS textmessage from a contact on a client application hosted by the user'smobile phone, and the client application can update the user'scommunication history for the contact accordingly (e.g., incrementinginbound SMS frequency for the contact by 1).

In particular embodiments, the channel-listing process may update apresentation sequence for a user based on inbound and outboundcommunication history between the user and one or more contacts assignedto the proximity group. The updating process may consider, for a givensocial proximity group, the relative frequencies (in the inbound and/oroutbound directions) that the different communications channels are usedby a given user or in connection with users in the proximity group. Inparticular embodiments, the channel-listing process may adjust apresentation sequence for a user based on inbound and outboundcommunication history between the user and one or more contacts assignedto the proximity group by calculating, for each communication channel ina presentation sequence, a weighted average of a default score, inboundcommunication history, and outbound communication history of thecommunication channel, and re-ordering the presentation sequence by thecalculated weighted average of each communication channel in thepresentation sequence.

FIG. 3 illustrates an example table showing data values that may be usedfor updating a presentation sequence based on inbound and outboundcommunication history. In the example of FIG. 3, the channel-listingprocess can establish a presentation sequence (PS1) for a first user orproximity group (301), and assign default scores for communicationchannels in the presentation sequence, with the communication channel onthe top of the sequence having the highest score (e.g., 1.0 for chat,0.8 for call, etc.). The default scores may be based on global defaultsor may be based on a presentation sequence explicitly configured by thesubject user. In some implementations, a user may also explicitlyconfigure one or more communications channels from appearing in apresentation sequence for one or more users or proximity groups. Forexample, a user may configure the system to only allow the user's cellphone number to appear in presentation sequences for select users or a“family” proximity group. The channel-listing process can also recordcommunication history between the first user and one or more usersassigned to the presentation sequence and/or the proximity group. Forexample, for outbound communication between the first user and the oneor more users assigned to the presentation sequence, 10% of the outboundcommunication is chat, 45% is call, 5% is SMS, 40% is email and 0% isIM. For example, for inbound communication, 10% of the inboundcommunication is chat, 55% is call, 5% is SMS, 30% is email and 0% isIM. The channel-listing process can assign weighting factors to thedefault score, outbound communication and inbound communication (0.5 fordefault score, 0.3 for outbound communication, and 0.2 for inboundcommunication), and calculate a weighted average for each communicationchannel. Using “call” in FIG. 3 as an example, weighted average for callis:

(0.8*0.5+45%*0.3+55%*0.2)/3=0.65

The channel-listing process can re-order communication channels of thepresentation sequence PS1 by the calculated weighted average of eachcommunication channel (302). Accordingly, the channel listing processcan operate to adjust the presentation sequence corresponding to one ormore users or proximity groups based on observed communications habitsof the users.

As a user of the social networking system can keep one or more addressbooks outside the social networking system, in additional to the addressbook stored in user profile database 101, it may be more efficient(e.g., to reduce network traffic between the social networking systemand a remote device) to store a local copy of presentation sequenceswith each address book outside the social networking system. Inparticular embodiments, the channel-listing process may store a localcopy of presentation sequences in a user's client device 122. In oneembodiment, the channel-listing process may store a local copy ofpresentation history and a local copy of communication history, in astorage device of a user's client device 122 (e.g., a microSD flashmemory card in a mobile phone). In particular embodiments, thechannel-listing process may store a local copy of presentation sequencesin a server hosting a user's address book. In one embodiment, thechannel-listing process may store a local copy of presentation sequencesand a local copy of communication history, in a storage device (e.g., ahard disk drive) of a server hosting a user's address book, or in astorage device linked to a server hosting a user's address book. Inparticular embodiments, a connection between a user and another personmay cause an update to a local copy of presentation history. Forexample, a user may receive an SMS text message from a contact on aclient application hosted by the user's mobile phone, and the clientapplication can cause the channel-listing process to update the locallystored communication history, and update corresponding presentationsequence locally if needed. For example, a server hosting a user'saddress book can facilitate a chat session between the user and acontact, causing the channel-listing process to update the locallystored communication history, and update corresponding presentationsequence locally if needed. In particular embodiments, thechannel-listing process may present communication channels of a contactin a user's address book as sorted by one of the locally storedpresentation sequences.

In particular embodiments, the channel-listing process may synchronizeone or more local copies of presentation sequences with the presentationsequences stored in user profile database 101. For example, thechannel-listing process can poll a local copy of presentation sequencesin a user's mobile phone every Monday at 3 AM, determine changes in thelocal copy and changes in the presentation sequences stored in userprofile database 101, and update the local copy and the presentationsequences stored in user profile database 101 if needed.

As discussed above, implementations of the invention can also be used toselect the top-ranked communications channel when a requesting userrequests contact information for a target user. For example, arequesting user, using client device 122 may access the socialnetworking system and see an identifier of a target user. The requestinguser, desiring to contact the user, may access an icon or other controlto cause the client device 122 to initiate a communications session withthe target user. In some implementations, the social networking systemmay execute the channel listing process to identify a communicationschannel and provide the selected communications channel and channelinformation to a client device 122, which may use the information toinitiate a communications session with the target user.

While the foregoing embodiments may be implemented in a variety ofnetwork configurations, the following illustrates an example networkenvironment for didactic, and not limiting, purposes. FIG. 5 illustratesan example network environment 500. Network environment 500 includes anetwork 510 coupling one or more servers 520 and one or more clients 530to each other. Network environment 500 also includes one or more datastorage 540 linked to one or more servers 520. Particular embodimentsmay be implemented in network environment 500. For example, socialnetworking system frontend 120 may be written in software programshosted by one or more servers 520. For example, event database 102 maybe stored in one or more storage 540. In particular embodiments, network510 is an intranet, an extranet, a virtual private network (VPN), alocal area network (LAN), a wireless LAN (WLAN), a wide area network(WAN), a metropolitan area network (MAN), a portion of the Internet, oranother network 510 or a combination of two or more such networks 510.The present disclosure contemplates any suitable network 510.

One or more links 550 couple a server 520 or a client 530 to network510. In particular embodiments, one or more links 550 each includes oneor more wired, wireless, or optical links 550. In particularembodiments, one or more links 550 each includes an intranet, anextranet, a VPN, a LAN, a WLAN, a WAN, a MAN, a portion of the Internet,or another link 550 or a combination of two or more such links 550. Thepresent disclosure contemplates any suitable links 550 coupling servers520 and clients 530 to network 510.

In particular embodiments, each server 520 may be a unitary server ormay be a distributed server spanning multiple computers or multipledatacenters. Servers 520 may be of various types, such as, for exampleand without limitation, web server, news server, mail server, messageserver, advertising server, file server, application server, exchangeserver, database server, or proxy server. In particular embodiments,each server 520 may include hardware, software, or embedded logiccomponents or a combination of two or more such components for carryingout the appropriate functionalities implemented or supported by server520. For example, a web server is generally capable of hosting websitescontaining web pages or particular elements of web pages. Morespecifically, a web server may host HTML files or other file types, ormay dynamically create or constitute files upon a request, andcommunicate them to clients 530 in response to HTTP or other requestsfrom clients 530. A mail server is generally capable of providingelectronic mail services to various clients 530. A database server isgenerally capable of providing an interface for managing data stored inone or more data stores.

In particular embodiments, one or more data storages 540 may becommunicatively linked to one or more servers 520 via one or more links550. In particular embodiments, data storages 540 may be used to storevarious types of information. In particular embodiments, the informationstored in data storages 540 may be organized according to specific datastructures. In particular embodiment, each data storage 540 may be arelational database. Particular embodiments may provide interfaces thatenable servers 520 or clients 530 to manage, e.g., retrieve, modify,add, or delete, the information stored in data storage 540.

In particular embodiments, each client 530 may be an electronic deviceincluding hardware, software, or embedded logic components or acombination of two or more such components and capable of carrying outthe appropriate functions implemented or supported by client 530. Forexample and without limitation, a client 530 may be a desktop computersystem, a notebook computer system, a netbook computer system, ahandheld electronic device, or a mobile telephone. The presentdisclosure contemplates any suitable clients 530. A client 530 mayenable a network user at client 530 to access network 530. A client 530may enable its user to communicate with other users at other clients530.

A client 530 may have a web browser 532, such as MICROSOFT INTERNETEXPLORER, GOOGLE CHROME or MOZILLA FIREFOX, and may have one or moreadd-ons, plug-ins, or other extensions, such as TOOLBAR or YAHOOTOOLBAR. A user at client 530 may enter a Uniform Resource Locator (URL)or other address directing the web browser 532 to a server 520, and theweb browser 532 may generate a Hyper Text Transfer Protocol (HTTP)request and communicate the HTTP request to server 520. Server 520 mayaccept the HTTP request and communicate to client 530 one or more HyperText Markup Language (HTML) files responsive to the HTTP request. Client530 may render a web page based on the HTML files from server 520 forpresentation to the user. The present disclosure contemplates anysuitable web page files. As an example and not by way of limitation, webpages may render from HTML files, Extensible Hyper Text Markup Language(XHTML) files, or Extensible Markup Language (XML) files, according toparticular needs. Such pages may also execute scripts such as, forexample and without limitation, those written in JAVASCRIPT, JAVA,MICROSOFT SILVERLIGHT, combinations of markup language and scripts suchas AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein,reference to a web page encompasses one or more corresponding web pagefiles (which a browser may use to render the web page) and vice versa,where appropriate.

FIG. 6 illustrates an example computer system 600, which may be usedwith some embodiments of the present invention. This disclosurecontemplates any suitable number of computer systems 600. Thisdisclosure contemplates computer system 600 taking any suitable physicalform. As example and not by way of limitation, computer system 600 maybe an embedded computer system, a system-on-chip (SOC), a single-boardcomputer system (SBC) (such as, for example, a computer-on-module (COM)or system-on-module (SOM)), a desktop computer system, a laptop ornotebook computer system, an interactive kiosk, a mainframe, a mesh ofcomputer systems, a mobile telephone, a personal digital assistant(PDA), a server, or a combination of two or more of these. Whereappropriate, computer system 600 may include one or more computersystems 600; be unitary or distributed; span multiple locations; spanmultiple machines; or reside in a cloud, which may include one or morecloud components in one or more networks. Where appropriate, one or morecomputer systems 600 may perform without substantial spatial or temporallimitation one or more steps of one or more methods described orillustrated herein. As an example and not by way of limitation, one ormore computer systems 600 may perform in real time or in batch mode oneor more steps of one or more methods described or illustrated herein.One or more computer systems 600 may perform at different times or atdifferent locations one or more steps of one or more methods describedor illustrated herein, where appropriate.

In particular embodiments, computer system 600 includes a processor 602,memory 602, storage 606, an input/output (I/O) interface 608, acommunication interface 610, and a bus 612. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 602 includes hardware for executinginstructions, such as those making up a computer program. As an exampleand not by way of limitation, to execute instructions, processor 602 mayretrieve (or fetch) the instructions from an internal register, aninternal cache, memory 602, or storage 606; decode and execute them; andthen write one or more results to an internal register, an internalcache, memory 602, or storage 606. In particular embodiments, processor602 may include one or more internal caches for data, instructions, oraddresses. The present disclosure contemplates processor 602 includingany suitable number of any suitable internal caches, where appropriate.As an example and not by way of limitation, processor 602 may includeone or more instruction caches, one or more data caches, and one or moretranslation look-aside buffers (TLBs). Instructions in the instructioncaches may be copies of instructions in memory 602 or storage 606, andthe instruction caches may speed up retrieval of those instructions byprocessor 602. Data in the data caches may be copies of data in memory602 or storage 606 for instructions executing at processor 602 tooperate on; the results of previous instructions executed at processor602 for access by subsequent instructions executing at processor 602 orfor writing to memory 602 or storage 606; or other suitable data. Thedata caches may speed up read or write operations by processor 602. TheTLBs may speed up virtual-address translation for processor 602. Inparticular embodiments, processor 602 may include one or more internalregisters for data, instructions, or addresses. The present disclosurecontemplates processor 602 including any suitable number of any suitableinternal registers, where appropriate. Where appropriate, processor 602may include one or more arithmetic logic units (ALUs); be a multi-coreprocessor; or include one or more processors 602. Although thisdisclosure describes and illustrates a particular processor, thisdisclosure contemplates any suitable processor.

In particular embodiments, memory 602 includes main memory for storinginstructions for processor 602 to execute or data for processor 602 tooperate on. As an example and not by way of limitation, computer system600 may load instructions from storage 606 or another source (such as,for example, another computer system 600) to memory 602. Processor 602may then load the instructions from memory 602 to an internal registeror internal cache. To execute the instructions, processor 602 mayretrieve the instructions from the internal register or internal cacheand decode them. During or after execution of the instructions,processor 602 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor602 may then write one or more of those results to memory 602. Inparticular embodiments, processor 602 executes only instructions in oneor more internal registers or internal caches or in memory 602 (asopposed to storage 606 or elsewhere) and operates only on data in one ormore internal registers or internal caches or in memory 602 (as opposedto storage 606 or elsewhere). One or more memory buses (which may eachinclude an address bus and a data bus) may couple processor 602 tomemory 602. Bus 612 may include one or more memory buses, as describedbelow. In particular embodiments, one or more memory management units(MMUs) reside between processor 602 and memory 602 and facilitateaccesses to memory 602 requested by processor 602. In particularembodiments, memory 602 includes random access memory (RAM). This RAMmay be volatile memory, where appropriate Where appropriate, this RAMmay be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, whereappropriate, this RAM may be single-ported or multi-ported RAM. Thepresent disclosure contemplates any suitable RAM. Memory 602 may includeone or more memories 602, where appropriate. Although this disclosuredescribes and illustrates particular memory, this disclosurecontemplates any suitable memory.

In particular embodiments, storage 606 includes mass storage for data orinstructions. As an example and not by way of limitation, storage 606may include an HDD, a floppy disk drive, flash memory, an optical disc,a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB)drive or a combination of two or more of these. Storage 606 may includeremovable or non-removable (or fixed) media, where appropriate. Storage606 may be internal or external to computer system 600, whereappropriate. In particular embodiments, storage 606 is non-volatile,solid-state memory. In particular embodiments, storage 606 includesread-only memory (ROM). Where appropriate, this ROM may bemask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM),electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM),or flash memory or a combination of two or more of these. Thisdisclosure contemplates mass storage 606 taking any suitable physicalform. Storage 606 may include one or more storage control unitsfacilitating communication between processor 602 and storage 606, whereappropriate. Where appropriate, storage 606 may include one or morestorages 606. Although this disclosure describes and illustratesparticular storage, this disclosure contemplates any suitable storage.

In particular embodiments, I/O interface 608 includes hardware,software, or both providing one or more interfaces for communicationbetween computer system 600 and one or more I/O devices. Computer system600 may include one or more of these I/O devices, where appropriate. Oneor more of these I/O devices may enable communication between a personand computer system 600. As an example and not by way of limitation, anI/O device may include a keyboard, keypad, microphone, monitor, mouse,printer, scanner, speaker, still camera, stylus, tablet, touch screen,trackball, video camera, another suitable I/O device or a combination oftwo or more of these. An I/O device may include one or more sensors.This disclosure contemplates any suitable I/O devices and any suitableI/O interfaces 608 for them. Where appropriate, I/O interface 608 mayinclude one or more device or software drivers enabling processor 602 todrive one or more of these I/O devices. I/O interface 608 may includeone or more I/O interfaces 608, where appropriate. Although thisdisclosure describes and illustrates a particular I/O interface, thisdisclosure contemplates any suitable I/O interface.

In particular embodiments, communication interface 610 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 600 and one or more other computer systems 600 or one ormore networks. As an example and not by way of limitation, communicationinterface 610 may include a network interface controller (NIC) ornetwork adapter for communicating with an Ethernet or other wire-basednetwork or a wireless NIC (WNIC) or wireless adapter for communicatingwith a wireless network, such as a WI-FI network. This disclosurecontemplates any suitable network and any suitable communicationinterface 610 for it. As an example and not by way of limitation,computer system 600 may communicate with an ad hoc network, a personalarea network (PAN), a local area network (LAN), a wide area network(WAN), a metropolitan area network (MAN), or one or more portions of theInternet or a combination of two or more of these. One or more portionsof one or more of these networks may be wired or wireless. As anexample, computer system 600 may communicate with a wireless PAN (WPAN)(such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAXnetwork, a cellular telephone network (such as, for example, a GlobalSystem for Mobile Communications (GSM) network), or other suitablewireless network or a combination of two or more of these. Computersystem 600 may include any suitable communication interface 610 for anyof these networks, where appropriate. Communication interface 610 mayinclude one or more communication interfaces 610, where appropriate.Although this disclosure describes and illustrates a particularcommunication interface, this disclosure contemplates any suitablecommunication interface.

In particular embodiments, bus 612 includes hardware, software, or bothcoupling components of computer system 600 to each other. As an exampleand not by way of limitation, bus 612 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a Micro ChannelArchitecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, aPCI-Express (PCI-X) bus, a serial advanced technology attachment (SATA)bus, a Video Electronics Standards Association local (VLB) bus, oranother suitable bus or a combination of two or more of these. Bus 612may include one or more buses 612, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

Herein, reference to a computer-readable storage medium encompasses oneor more non-transitory, tangible computer-readable storage mediapossessing structure. As an example and not by way of limitation, acomputer-readable storage medium may include a semiconductor-based orother integrated circuit (IC) (such, as for example, afield-programmable gate array (FPGA) or an application-specific IC(ASIC)), a hard disk, an HDD, a hybrid hard drive (HHD), an opticaldisc, an optical disc drive (ODD), a magneto-optical disc, amagneto-optical drive, a floppy disk, a floppy disk drive (FDD),magnetic tape, a holographic storage medium, a solid-state drive (SSD),a RAM-drive, a SECURE DIGITAL card, a SECURE DIGITAL drive, or anothersuitable computer-readable storage medium or a combination of two ormore of these, where appropriate. Herein, reference to acomputer-readable storage medium excludes any medium that is noteligible for patent protection under 35 U.S.C. §101. Herein, referenceto a computer-readable storage medium excludes transitory forms ofsignal transmission (such as a propagating electrical or electromagneticsignal per se) to the extent that they are not eligible for patentprotection under 35 U.S.C. §101.

This disclosure contemplates one or more computer-readable storage mediaimplementing any suitable storage. In particular embodiments, acomputer-readable storage medium implements one or more portions ofprocessor 602 (such as, for example, one or more internal registers orcaches), one or more portions of memory 602, one or more portions ofstorage 606, or a combination of these, where appropriate. In particularembodiments, a computer-readable storage medium implements RAM or ROM.In particular embodiments, a computer-readable storage medium implementsvolatile or persistent memory. In particular embodiments, one or morecomputer-readable storage media embody software. Herein, reference tosoftware may encompass one or more applications, bytecode, one or morecomputer programs, one or more executables, one or more instructions,logic, machine code, one or more scripts, or source code, and viceversa, where appropriate. In particular embodiments, software includesone or more application programming interfaces (APIs). This disclosurecontemplates any suitable software written or otherwise expressed in anysuitable programming language or combination of programming languages.In particular embodiments, software is expressed as source code orobject code. In particular embodiments, software is expressed in ahigher-level programming language, such as, for example, C, Perl, or asuitable extension thereof. In particular embodiments, software isexpressed in a lower-level programming language, such as assemblylanguage (or machine code). In particular embodiments, software isexpressed in JAVA. In particular embodiments, software is expressed inHyper Text Markup Language (HTML), Extensible Markup Language (XML), orother suitable markup language.

The present disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsherein that a person having ordinary skill in the art would comprehend.Similarly, where appropriate, the appended claims encompass all changes,substitutions, variations, alterations, and modifications to the exampleembodiments herein that a person having ordinary skill in the art wouldcomprehend.

What is claimed is:
 1. A method comprising: receiving, at a computingdevice, a request from a client device associated with a requesting userfor communication-channel information; acquiring, by the computingdevice, an affiliation coefficient between a target user and therequesting user; determining, by the computing device, a set ofcommunication channels based at least in part on the affiliationcoefficient between the target user and the requesting user, whereineach of the communication channels is associated with one or moreuser-selectable elements of a plurality of user-selectable elements;calculating, by the computing device, a score for one or more of thecommunication channels based at least in part on communication-historyinformation of the target user or the receiving user; ranking, by thecomputing device, the scored communication channels based at least inpart on the calculated scores; and sending, from the computing device,to the client device, in an order based at least in part on the ranking,one or more presentation sequences for one or more of theuser-selectable elements associated with each of the scoredcommunication channels.
 2. The method of claim 1, further comprising:acquiring communication-history information between the target user andone or more other users, the other users grouped into one or moreaffiliation groups based at least in part on one or more affiliationcoefficients between the other users and the target user; andcalculating the score for one or more of the communication channelsbased at least in part on the communication-history informationassociated with one or more of the affiliation groups.
 3. The method ofclaim 1, wherein acquiring the affiliation coefficient between thetarget user and the requesting user comprises: accessing a data store ofsocial-graph information of the requesting user; and determining adegree of separation from the requesting user to the target user.
 4. Themethod of claim 1 wherein ranking the scored communication channelscomprises: prior to sending the presentation sequences, adjusting theranking of the scored communication channels based at least in part on acurrent context of one or more of: the target user; or the receivinguser.
 5. The method of claim 1, further comprising: determining one ormore top-ranked communication channels of the ranked communicationchannels; wherein presenting the user-selectable elements comprisessending to the client device information identifying only one or more ofthe user-selectable elements associated with each of one or more of thetop-ranked communication channels.
 6. The method of claim 1, furthercomprising: determining one or more rules configured at least in part bythe requesting user, wherein one or more of the rules comprises apreference of the requesting user for one or more of the communicationchannels in relation to the target user; wherein calculating the scorefor the communication channels is based at least in part on one or moreof the rules.
 7. The method of claim 2, further comprising: determiningone or more rules configured at least in part by the requesting user,wherein one or more of the rules comprises a preference of therequesting user for one or more of the communication channels inrelation to one or more of the affiliation groups; wherein calculatingthe score for the communication channels is based at least in part onone or more of the rules.
 8. The method of claim 1, wherein one or moreof the calculated scores comprises, for each respective communicationchannel, a weighted average of the communication history and a defaultscore associated with the communication channel, wherein thecommunication history comprises inbound and outbound communicationhistory.
 9. A system comprising: one or more processors; and a memorycoupled to the processors comprising instructions executable by theprocessors, the processors being operable when executing theinstructions to: receive a request from a client device associated witha requesting user for communication-channel information; acquire anaffiliation coefficient between a target user and the requesting user;determine a set of communication channels based at least in part on theaffiliation coefficient between the target user and the requesting user,wherein each of the communication channels is associated with one ormore user-selectable elements of a plurality of user-selectableelements; calculate a score for one or more of the communicationchannels based at least in part on communication-history information ofthe target user or the receiving user; rank the scored communicationchannels based at least in part on the calculated scores; and send, tothe client device, in an order based at least in part on the ranking,one or more presentation sequences for one or more of theuser-selectable elements associated with each of the scoredcommunication channels.
 10. The system of claim 9, wherein theprocessors are further operable when executing the instructions to:acquire communication-history information between the target user andone or more other users, the other users grouped into one or moreaffiliation groups based at least in part on one or more affiliationcoefficients between the other users and the target user; and calculatethe score for one or more of the communication channels based at leastin part on the communication-history information associated with one ormore of the affiliation groups.
 11. The system of claim 9, wherein toacquire the affiliation coefficient between the target user and therequesting user, the processors are further operable when processing theinstructions to: access a data store of social-graph information of therequesting user; and determine a degree of separation from therequesting user to the target user.
 12. The system of claim 9, whereinto rank the scored communication channels, the processors are furtheroperable when processing the instructions to: prior to sending thepresentation sequences, adjust the ranking of the scored communicationchannels based at least in part on a current context of one or more of:the target user; or the receiving user.
 13. The system of claim 9,wherein the processors are further operable when executing theinstructions to: determine one or more top-ranked communication channelsof the ranked communication channels; wherein presenting theuser-selectable elements comprises sending to the client deviceinformation identifying only one or more of the user-selectable elementsassociated with each of one or more of the top-ranked communicationchannels.
 14. The system of claim 9, wherein the processors are furtheroperable when executing the instructions to: determine one or more rulesconfigured at least in part by the requesting user, wherein one or moreof the rules comprises a preference of the requesting user for one ormore of the communication channels in relation to the target user;wherein calculating the score for the communication channels is based atleast in part on one or more of the rules.
 15. The system of claim 10,wherein the processors are further operable when executing theinstructions to: determine one or more rules configured at least in partby the requesting user, wherein one or more of the rules comprises apreference of the requesting user for one or more of the communicationchannels in relation to one or more of the affiliation groups; whereincalculating the score for the communication channels is based at leastin part on one or more of the rules.
 16. One or more computer-readablenon-transitory storage media embodying software that is operable whenexecuted to: receive a request from a client device associated with arequesting user for communication-channel information; acquire anaffiliation coefficient between a target user and the requesting user;determine a set of communication channels based at least in part on theaffiliation coefficient between the target user and the requesting user,wherein each of the communication channels is associated with one ormore user-selectable elements of a plurality of user-selectableelements; calculate a score for one or more of the communicationchannels based at least in part on the communication-history informationof the target user or the receiving user; rank the scored communicationchannels based at least in part on the calculated scores; and send, tothe client device, in an order based at least in part on the ranking,one or more presentation sequences for one or more of theuser-selectable elements associated with each of the scoredcommunication channels.
 17. The media of claim 16, wherein the softwareis further operable when executed to: acquire communication-historyinformation between the target user and one or more other users, theother users grouped into one or more affiliation groups based at leastin part on one or more affiliation coefficients between the other usersand the target user; and calculate the score for one or more of thecommunication channels based at least in part on the communicationhistory-information associated with one or more of the affiliationgroups.
 18. The media of claim 16, wherein to acquire the affiliationcoefficient between the target user and the requesting user, thesoftware is further operable when executed to: access a data store ofsocial-graph information of the requesting user; and determine a degreeof separation from the requesting user to the target user.
 19. The mediaof claim 16, wherein to rank the scored communication channels, thesoftware is further operable when executed to: prior to sending thepresentation sequences, adjust the ranking of the scored communicationchannels based at least in part on a current context of one or more of:the target user; or the receiving user.
 20. The media of claim 16wherein the software is further operable when executing instructions to:determine one or more top-ranked communication channels of the rankedcommunication channels; wherein presenting the user-selectable elementscomprises sending to the client device information identifying only oneor more of the user-selectable elements associated with each of one ormore of the communication channels.